package cn.yinyu.queue.module.ecg.service.devmanage;

import java.time.LocalDateTime;
import java.util.*;
import cn.yinyu.queue.module.ecg.controller.admin.devmanage.vo.*;
import cn.yinyu.queue.module.ecg.dal.dataobject.devmanage.DeviceDO;
import cn.yinyu.queue.framework.common.pojo.PageResult;
import cn.yinyu.queue.framework.common.pojo.PageParam;
import cn.yinyu.queue.module.ecg.dal.dataobject.devmanage.DeviceStatisticDO;
import cn.yinyu.queue.module.ecg.dal.dataobject.jobrecord.JobRecordStatisticDO;

import javax.validation.Valid;

/**
 * 设备 Service 接口
 *
 * @author majianbo
 */
public interface DeviceService {

    /**
     * 创建设备
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createDevice(@Valid DeviceSaveReqVO createReqVO);

    /**
     * 更新设备
     *
     * @param updateReqVO 更新信息
     */
    void updateDevice(@Valid DeviceSaveReqVO updateReqVO);

    /**
     * 更新设备状态
     *
     * @param updateReqVO 更新信息
     */
    Integer updateDeviceState(@Valid DeviceSaveReqVO updateReqVO);

    /**
     * 删除设备
     *
     * @param id 编号
     */
    void deleteDevice(Integer id);

    /**
     * 获得设备
     *
     * @param id 编号
     * @return 设备
     */
    DeviceDO getDevice(Integer id);

    /**
     * 获得设备
     *
     * @param devId 编号
     * @return 设备
     */
    DeviceDO getDevice(String devId);

    /**
     * 获得设备分页
     *
     * @param pageReqVO 分页查询
     * @return 设备分页
     */
    PageResult<DeviceDO> getDevicePage(DevicePageReqVO pageReqVO);

    /**
     * 设备统计
     * @return
     */
    List<DeviceStatisticDO> getDeviceStatistic(DevicePageReqVO pageReqVO);
}

